In C++, la comunicazione è un flusso, non un evento di memorizzazione statica. La iostream libreria utilizza una gerarchia polimorfa in cui classi specializzate come ifstream (file) e istringstream (memoria) ereditano da istream. Questo permette Ereditarietà dei Flussi: le funzioni progettate per un flusso di base possono elaborare dati da qualsiasi sorgente in modo trasparente.
Il Vincolo dell'Immutabilità
I flussi rappresentano connessioni uniche e con stato ai dispositivi hardware. Per evitare che più oggetti si contendano lo stesso puntatore al file o il buffer della console, gli oggetti IO non possono essere copiati o assegnati. Tentare codice come ofstream out1, out2; out1 = out2; produce un errore del compilatore. Di conseguenza, gli oggetti IO devono essere passati tramite riferimento non costante.
Il Ponte Sequenziale
Mentre i flussi forniscono l'interfaccia, contenitori sequenziali (vector, list) forniscono la memoria. I dati in ingresso vengono tipicamente strutturati in questi contenitori, scegliendo vector per velocità o list per inserimenti flessibili.